\documentclass[12pt,a4paper,titlepage]{article}

\input{../J_sty_zh.tex}

\title{架构说明书}
\author{\htmladdnormallink{\tt Jerry Mouse}{http://jerrymouse.org.cn/}}
\date{\today}

\graphicspath{{data/}} %%图片路径

\begin{document}

\maketitle

\tableofcontents

\clearpage

\section{引言}
\subsection{编写目的}
\paragraph{}
本文档详细描述了enhance2web20的设计思想和程序设计结构，旨在帮助项目组成员了解整个系统的工作原理，设计思路与程序结构，为后续的编码工作提供有力的支持。本文档预期读者为与本项目相关的决策人员，开发人员，质控人员与测试人员。

\subsection{项目描述}
\paragraph{}
本项目名为enhance2web20。在不改变现存网站的基础上，让普通网站具备一些web2.0的（站内个性化搜索，个性化RSS之类）。普通的Web 2.0 用户可以自己来编制网站的内容，而我们旨在使用户能够改变网站的功能，结构。

\subsection{开发项目组信息}
\paragraph{}
指导老师：丁二玉
\begin{center}
\begin{tabular}{llll}
\toprule
角色  &  Id  & 姓名 & 电子邮件\\
\midrule
\rowcolor{lgray}
PM  &  Cat  & 颜开 & kaiyannju@gmail.com\\
TM  &  Dog  & 白孟阳 & bmy07@software.nju.com\\
\rowcolor{lgray}
TM  &  Mouse  & 吴阳 & WuYangNJU@gmail.com \\
TM  &  Bird  & 阎守卫 & yanshouwei@gmail.com \\
\bottomrule
\end{tabular}
\end{center}

\subsection{背景}
\begin{itemize}
 \item 项目名称:Enhance2web20
 \item 任务提出者:Jerry Mouse Studio
 \item 用户:个人电脑使用者
 \item 运行平台
\begin{itemize}
 \item 硬件环境:个人电脑
\item 软件环境
\begin{itemize}
 \item Firefox
\item IE
\item Chrome
\end{itemize}
\end{itemize}
\end{itemize}


\subsection{目标读者}
该项目计划书的目标读者是但不局限于:
\begin{itemize}
 \item 项目经理
 \item 项目组成员
 \item 项目评估人员
\end{itemize}

\subsection{文档范围}
\paragraph{}

该需求报告对Enhance2web20系统的各项需求进行了深入的分析、描述，以便于该项目 的计划，软件设计，和开发。此分析报告可能随项目的进展而进行少量局部变化。 

\subsection{参考资料}
\begin{itemize}
 \item 《2009年度学生创新项目大赛通知》
 \item 《软件设计文档国家标准》
\end{itemize}

\section{总览}
\paragraph{}

前台为浏览器插件，后台为云计算应用。之间使用Restful的Webservice连接，使用json作为通信语言。也有自己的网站来方便那些不喜安装插件的人。
\section{前台架构}
\subsection{概览}
\subsubsection{项目结构}
enhance2web20
\begin{itemize}
 \item addon
\begin{itemize}
 \item firefox
 \begin{itemize}
 \item featureManagerAddon
 \item searchInSiteAddon
 \item searchIntegrationAddon
 \item rssAddon
 \item onlineDocAddon
\end{itemize}
 \item ie
 \begin{itemize}
 \item ...
\end{itemize}
 \item chrome
 \begin{itemize}
 \item ...
\end{itemize}
\end{itemize}

\end{itemize}
以上都是子模块的名字

\subsection{featureManagerAddon}
\paragraph{}

提供一个功能管理界面，有可能的话（firefox3.5可以实现，ie和chrome不能），提供动态添加插件的功能。用户可以在这里统一设置插件的首选项和是否开启。
\subsection{searchInSiteAddon}
\paragraph{}

提供站内搜索功能。在工具栏(firefox,ie)或者地址栏(chrome)提供一个按钮，拖拽至页面可以形成一个搜索框，搜索框提供一些高级功能。通过web接口访问后台获得数据。
\subsection{searchIntegrationAddon}
\paragraph{}

增强google,baidu,不提供界面。截获要显示的html数据，加工之，过滤内容重复的链接。(检测重复使用矩阵算法)。也截获其发出的搜索请求，分析之，得出是一个结论(是音乐？软件？电影？视频？地名？)，直接跳转到用户想要上的网站(百度音乐，华军软件，迅雷看看，Youku,Google Map)。
\subsection{rssAddon}
\paragraph{}

在地址栏提供一个按钮，可以使浏览器调用我们为这个网站设计的rss源。同时也提供自定义界面，来让用户决定他希望将那些部分rss化。
\subsection{onlineDocAddon}
\paragraph{}

在用户点击包含doc之类的链接之后。在提示下载框中加入用Google Doc打开之类的选项。

\section{后台架构}
\subsection{概览}
\subsubsection{项目结构}
\begin{itemize}
 \item enhance2web20

 \begin{itemize}
 \item webInterface
 \begin{itemize}
 \item website
 \item searchInSite
 \item searchIntegration
 \item rss
 \item onlineDoc
 \end{itemize}

 \end{itemize}

 \begin{itemize}
 \item core
 \begin{itemize}
 \item webCrawler
 \item dataPicker
 \item gaeDataBaseSupport
 \end{itemize}
 \end{itemize}

\end{itemize}

 

以上都是子项目的名字。
\paragraph{}

其中webInterface旗下的项目都可以提供一个web接口。比如website项目可以通过``http://enhance2web20.appspot.com/website/'' 出站。url满足restful的命名规范,比如可以通过 \\ ``http://enhance2web20.appspot.com/searchInSite/bbs.nju.edu.cn/history/10/大跃进'' 来获得小百合历史版有关大跃进回帖超过10的帖子的资料。其他子项目同理类推。
\paragraph{}
其中core旗下的项目为上面的web项目提供技术支持。webCrawler提供提供网络爬虫，为搜索提供支持。dataPicker旨在分析提取html之中的数据，当然也支持json等其他数据格式。gaeDataBaseSupport为Google app engine提供数据库上的支持包括测试Mock。当然在项目进行时也会有新的core项目加入。

\subsection{website}
\paragraph{}

一个下载，提供用户支持的平台。同时他也为不喜安装浏览器插件的人提供一个使用enhance2web20服务的机会。由于enhance2web20服务全部是Restful的Webserive实现，所以实现是很方便。用户可以在这里搜索想要的内容，获取rss订阅，查阅在线文档。
\subsection{searchInSite}
\paragraph{}

通过数据挖掘，构建合理的索引系统实现。
\subsection{searchIntegration}
\paragraph{}

通过web数据挖掘，建立完善的分类机制来实现。
\subsection{RSS}
\paragraph{}

建立个人信息库，定时获取html数据加工成rss，在加以筛选。也可以直接获取rss数据来筛选。
\subsection{onlineDoc}
\paragraph{}

他的实现并没有想象的简单，我们需要构建一系列上传，显示的引擎。
\subsection{webCrawler}
\paragraph{}

不是盲目依靠链接的网络爬虫，它能搜集数据并将其分类。
\subsection{dataPicker}
\paragraph{}

分析数据的好武器，杂乱的html信息要由他来整理。目标是一个容错性高速度快的html分析引擎。同时为提取数据来优化。
\subsection{gaeDataBaseSupport}
\paragraph{}

Google App Engine的难点，也是云计算应用和普通应用的重大区别之处。他的作用在于为项目本身提供在普通应用和云计算应用之间的平滑过渡。使其他项目的开发人员不至于纠结于GAE的难点。

\section{系统环境}
\subsection{开发环境}
\begin{itemize}
 \item Linux工作站
\end{itemize}
\subsection{硬件环境}
\begin{itemize}
 \item 个人电脑
 \item 国际互联网
 \item Google集群服务器
\end{itemize}

\subsection{软件环境}
\begin{itemize}
 \item 服务器端
 \begin{itemize}
 \item Google App Engine 
 \end{itemize}
 \item 开发工具
 \begin{itemize}
 \item Ant
 \item Maven
 \item Mercurial(分布式代码管理系统)
\end{itemize}

\end{itemize}

\paragraph{}
细心的读者会发现，以上几乎全部是开源软件。我们的项目是完全依赖强大开源社区构建的。而这个项目本身也是遵循Apache协议开源的。依据这个商业友好的协议，其他队伍可以自由开发，不用担心版权问题。

\section{软件运行环境}
\subsection{硬件环境}
\begin{itemize}
 \item 个人电脑 
\end{itemize}
\subsection{客户端软件环境}
\begin{itemize}
 \item Firefox
 \item IE
 \item Chrome 
\end{itemize}
\subsection{服务器端软件环境}
\begin{itemize}
 \item Google App Engine
\end{itemize}

\end{document}

